package decorator_pattern.ex1;

/**
 * 主应用程序类，用于执行游戏逻辑。
 * @author 申书航
 * @version 1.0
 */
public class App {

    public static void main(String[] args) {
        // 创建两个普通的Troll对象
        Troll troll1 = new SimpleTroll(60, 50, 500, "Troll1");
        Troll troll2 = new SimpleTroll(70, 40, 500, "Troll2");



        // 为troll1添加防御特性
        Troll troll3 = new AddDefenseTroll(troll1);

        // 循环进行攻击，直到其中一个Troll的生命值为0
        while (true) {
            troll3.attack(troll2);
            if (troll2.getHp() <= 0) {
                break;
            }
            troll2.attack(troll3);
            if (troll3.getHp() <= 0) {
                break;
            }
        }
        System.out.println("=============================");

        // 创建另外两个普通的Troll对象
        Troll troll4 = new SimpleTroll(40, 50, 500, "Troll4");
        Troll troll5 = new SimpleTroll(70, 40, 500, "Troll5");
        // 为troll4添加攻击特性
        Troll troll6 = new AddAttackTroll(troll4);

        // 循环进行攻击，直到其中一个Troll的生命值为0
        while (true) {
            troll6.attack(troll5);
            if (troll5.getHp() <= 0) {
                break;
            }
            troll5.attack(troll6);
            if (troll6.getHp() <= 0) {
                break;
            }
        }
    }
}
